偵測對話很簡單,
也是最好重現的功能,
但也是有很多內容可以研究,
這篇主要是提一些偵測對話功能中可能會用到的情況,
為了方便大家看有哪些,
我會先把內容列表在上面後,
下面才會有圖示跟code。
當文字等於指定的目標,ex: 「ping」
if message.content == 'ping':
當使用tag呼叫機器人觸發
if re.findall(f"<@{client.application_id}>", message.content):
當文字有部分內容為目標,ex: 「呼叫幫手、呼叫幫手 123」
if re.findall("呼叫幫手", message.content):
在前篇中回覆是直接顯示在目標訊息的文字頻道,
但回覆其實還能直接私訊玩家的方式,
切記,回覆只限 @client.event 的 on_message 方式。
1.message.channel.send 發送訊息到目標伺服器的文字頻道
2.message.reply 使用「回覆」目標訊息
3.message.author.send 發送訊息到目標成員私訊
@client.event
async def on_message(message):
if message.author == client.user: # 排除機器人本身的訊息
return
if message.content == 'ping':
await message.channel.send('pong') # 回覆伺服器的文字頻道
await message.reply('ha') # 使用「回覆」目標訊息
await message.author.send("私訊給你~ pong") # 回覆伺服器成員私訊
使用全部的方式來逹成一個小小的互動
@client.event
async def on_message(message):
if message.author == client.user: # 排除機器人本身的訊息
return
# 純文字偵測「ping」
if message.content == 'ping':
await message.channel.send('pong') # 發送訊息到目標伺服器的文字頻道
# 偵測機器人被Tag
elif re.findall(f"<@{client.application_id}>", message.content):
await message.reply("安安 找我嗎~") # 使用「回覆」目標訊息
# 文字判斷
elif re.findall("呼叫幫手", message.content):
newStr = message.content.split('呼叫幫手')
await message.author.send("私訊給你~ 你剛剛說: "+ newStr[1]) # 發送訊息到目標成員私訊
結果:
小實作的程式碼如果我不多個import re都會錯誤
是的,
https://github.com/l13013312333/it_discordBot/blob/it_%236/src/discordBot.py
在範例中有使用import re ,
很抱歉文章不夠詳細也怕寫太多會太亂,
所以才直接給tag 給大家